... and collect the profiler information from the renderer.
if (root == NULL)
return;
- gtk_inspector_record_render (widget, window, region, root);
+ gtk_inspector_record_render (widget, renderer, window, region, root);
context = gdk_window_begin_draw_frame (window, region);
#include <gtk/gtklistbox.h>
#include <gtk/gtktreeselection.h>
#include <gtk/gtktreeview.h>
+#include <gsk/gskrendererprivate.h>
#include <gsk/gskrendernodeprivate.h>
#include "gtktreemodelrendernode.h"
void
gtk_inspector_recorder_record_render (GtkInspectorRecorder *recorder,
GtkWidget *widget,
+ GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
GskRenderNode *node)
frame_clock = gtk_widget_get_frame_clock (widget);
recording = gtk_inspector_render_recording_new (gdk_frame_clock_get_frame_time (frame_clock),
+ gsk_renderer_get_profiler (renderer),
&(GdkRectangle) { 0, 0,
gdk_window_get_width (window),
gdk_window_get_height (window) },
void gtk_inspector_recorder_record_render (GtkInspectorRecorder *recorder,
GtkWidget *widget,
+ GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
GskRenderNode *node);
g_clear_pointer (&recording->clip, cairo_region_destroy);
g_clear_pointer (&recording->node, gsk_render_node_unref);
+ g_clear_pointer (&recording->profiler_info, g_free);
G_OBJECT_CLASS (gtk_inspector_render_recording_parent_class)->finalize (object);
}
{
}
+static void
+collect_profiler_info (GtkInspectorRenderRecording *recording,
+ GskProfiler *profiler)
+{
+ GString *string;
+
+ string = g_string_new (NULL);
+ gsk_profiler_append_timers (profiler, string);
+ gsk_profiler_append_counters (profiler, string);
+ recording->profiler_info = g_string_free (string, FALSE);
+}
+
GtkInspectorRecording *
gtk_inspector_render_recording_new (gint64 timestamp,
+ GskProfiler *profiler,
const GdkRectangle *area,
const cairo_region_t *clip,
GskRenderNode *node)
"timestamp", timestamp,
NULL);
+ collect_profiler_info (recording, profiler);
recording->area = *area;
recording->clip = cairo_region_copy (clip);
recording->node = gsk_render_node_ref (node);
return &recording->area;
}
+const char *
+gtk_inspector_render_recording_get_profiler_info (GtkInspectorRenderRecording *recording)
+{
+ return recording->profiler_info;
+}
+
// vim: set et sw=2 ts=2:
#include <gdk/gdk.h>
#include <gsk/gsk.h>
+#include "gsk/gskprofilerprivate.h"
#include "inspector/recording.h"
GdkRectangle area;
cairo_region_t *clip;
GskRenderNode *node;
+ char *profiler_info;
} GtkInspectorRenderRecording;
typedef struct _GtkInspectorRenderRecordingClass
GtkInspectorRecording *
gtk_inspector_render_recording_new (gint64 timestamp,
+ GskProfiler *profiler,
const GdkRectangle *area,
const cairo_region_t *clip,
GskRenderNode *node);
gtk_inspector_render_recording_get_clip_region (GtkInspectorRenderRecording *recording);
const cairo_rectangle_int_t *
gtk_inspector_render_recording_get_area (GtkInspectorRenderRecording *recording);
+const char * gtk_inspector_render_recording_get_profiler_info
+ (GtkInspectorRenderRecording *recording);
G_END_DECLS
void
gtk_inspector_record_render (GtkWidget *widget,
+ GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
GskRenderNode *node)
gtk_inspector_recorder_record_render (GTK_INSPECTOR_RECORDER (iw->widget_recorder),
widget,
+ renderer,
window,
region,
node);
void gtk_inspector_window_rescan (GtkWidget *iw);
void gtk_inspector_record_render (GtkWidget *widget,
+ GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
GskRenderNode *node);